#ifndef ATTRIBUTEDIALOG_H
#define ATTRIBUTEDIALOG_H

#include "attribute.h"
#include "branchobj.h"

#include <QCloseEvent>
#include <QDialog>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QVBoxLayout>

/*! \brief Set the dialog mode  */
enum AttributeDialogMode {
    Definition, //!< Edit attribute definitions (AttributeDef)
    Object      //!< Edit attributes of OrnamentedObj
};

class AttributeDialog : public QDialog {
    Q_OBJECT
  public:
    AttributeDialog(QWidget *parent = 0);
    void setTable(AttributeTable *table = 0);
    void setBranch(BranchObj *bo);
    void setMode(const AttributeDialogMode &m);
    void updateTable();
  signals:
    void windowClosed();
  private slots:
    void addKey();

  protected:
    void closeEvent(QCloseEvent *);

  private:
    QVBoxLayout *vboxLayout;
    QVBoxLayout *tableLayout;
    QHBoxLayout *hboxLayout;
    QPushButton *addButton;
    QSpacerItem *spacerItem;
    QPushButton *closeButton;

    AttributeDialogMode mode;
    AttributeTable *table;
    BranchObj *branch;
};

#endif
